TCP short for Transmission Control Protocol is the most dominant protocol used in computer networking and on the Internet. In TCP network congestion is generally indicated by packet loss—overloaded network nodes will drop packets, which will signal the TCP sender to slow down the connection.
In modern cellular networks the final cellular link uses aggressive error correction and retransmission to hide any radio problems from the TCP layer. The TCP congestion avoidance algorithm relies on packet drops to determine the bandwidth available. It speeds up the data transfer until packets start to drop, then slows down the connection. Ideally it speeds up and slows down until it finds equilibrium equal to the speed of the link. However, for this to work the packet drops must occur in a timely manner, so that the algorithm can select a suitable transfer speed.
For TCP connections with a large congestion window, this also implies buffering relatively large amounts of data for a connection in the nodeB; buffering up to 30 s of data has been observed. With a large buffer that has been filled, the packets will arrive at their destination, but with a higher latency. This buffering directly causes long round trip times, in an effect known as buffer bloat. Since there is no packet loss on the link, just delays, standard TCP algorithms will never slow down the connection and the buffers just keep on growing. Newly arriving packets are dropped only when the buffer is fully saturated. This effect is particularly problematic for an internet connection being shared by multiple users, e.g. where one or more users are doing a large batch transfers while others are trying to use the connection interactively. In a first-in first-out queuing system, larger buffers result in longer queues and higher latency, but do not improve network throughput and may reduce throughput to zero.
Thus, it is a problem with prior art solutions that the TCP/IP protocol continues to send more and more data without waiting for any of that data to be acknowledged until either the TCP receiver's buffer is full, or some packets are dropped by the network. As a result it is common for large numbers of packets to be queued up in the network towards a TCP end point. This queue then causes problems for interactive TCP/IP traffic running towards the same host. Interactive service packets are queued for sometimes many seconds.